[JavaScript]ShiftJISの文字コードでCSVを作りたい
使うもの
- json2csv
- jconv
まずはCSVを作る
まずShift JISへの変換などはせず、JSONからCSVを作成します。
import { Parser } from "json2csv"; const fields = [ { label: "column1"; value: "alpha"; }, { label: "column2"; value: "beta"; }, ]; const json = [ { "alpha": "first" }, { "beta": "second" }, ]; const json2csvParser = new Parser({ fields: fields, header: true }); const csv = json2csvParser.parse(json); const objectUrl = URL.createObjectURL(new Blob([csv], {type: "text/csv"}));
json2csv で、JSONをCSVに変換します。
Parserで初期化する際、fields にヘッダーに使う値を渡しています。
ヘッダーに設定する文字列をlabelに渡し、valueに対応するJSONのkeyを指定します。
json2csvParser.parse(json)
でlabelとそれに対応した値をそれぞれ渡します。
また、最後にダウンロードするリンクを作るために URL.createObjectURL()
を使って
Shift-JISに変換する
続いて、jconv を使ってShift-JISに変換します。
import { Parser } from "json2csv"; import jconv from "jconv"; const fields = [ { label: "column1"; value: "alpha"; }, { label: "column2"; value: "beta"; }, ]; const json = [ { "alpha": "first" }, { "beta": "second" }, ]; const json2csvParser = new Parser({ fields: fields, header: true }); const csv = json2csvParser.parse(json); // const objectUrl = URL.createObjectURL( new Blob([csv], {type: "text/csv"})); const jisCsvBuffer = jconv(csv, "UTF8", "Shift_JIS"); const jisCsv = new Blob([jisCsvBuffer], {type: "text/csv"}); const objectUrl = URL.createObjectURL(jisCsv);
jconv(csv, "UTF8", "Shift_JIS");
の箇所でcsv文字列をShiftJISに変換しています。
注意点としては、jconv で変換した後に返される値はstring型ではなく Uint8Array型になっています。
stringとして処理を加えたい場合はjconvで変換する前に処理を加える必要があるので注意してください。